/*
 * ARDroneNavData.h
 *
 *  Created on: 25.07.2012
 *      Author: seb
 */
#ifndef ARDRONENAVDATA_H_
#define ARDRONENAVDATA_H_

#include "ARDroneGlobalSettings.h"
#include "model/IDroneNavData.h"
#include <boost/lexical_cast.hpp>

#include <boost/numeric/conversion/converter.hpp>

class ARDroneNavData : public IDroneNavData{

	// main Navigation Data
	int32 	droneState;
	int32 	battery;
	int32 	sequenceNumber;
	int32	frameCount;
	int32 	visionFlag;
	int32 	height;
	int32	controlState;
	float	pitch;
	float 	roll;
	float 	yaw;
	float 	velocityX;
	float 	velocityY;
	float 	velocityZ;

	float int32ToFloat(int32 val);

	string int32ToString(int32 val);
	string floatToString(float val);

public:
	ARDroneNavData();
	virtual ~ARDroneNavData();

	int32 getBattery() const;
	void setBattery(int32 battery);

	int32 getDroneState() const;
	void setDroneState(int32 droneState);

	int32 getHeight() const;
	void setHeight(int32 height);

	float getPitch() const;
	void setPitch(float pitch);
	void setPitch(int32 pitch);

	float getRoll() const;
	void setRoll(float roll);
	void setRoll(int32 roll);

	float getYaw() const;
	void setYaw(float yaw);
	void setYaw(int32 yaw);

	int32 getSequenceNumber() const;
	void setSequenceNumber(int32 sequenceNumber);

	float getVelocityX() const;
	void setVelocityX(float velocityX);
	void setVelocityX(int32 velocityX);

	float getVelocityY() const;
	void setVelocityY(float velocityY);
	void setVelocityY(int32 velocityY);

	float getVelocityZ() const;
	void setVelocityZ(float velocityZ);
	void setVelocityZ(int32 velocityZ);

	int32 getVisionFlag() const;
	void setVisionFlag(int32 visionFlag);

	int32 getControlState() const;
	void setControlState(int32 controlState);

	int32 getFrameCount() const;
	void setFrameCount(int32 frameCount);

	// Interface fucntions
	string getBattery();
	string getHeight();
	string getVelocity();
};

#endif /* ARDRONENAVDATA_H_ */
